home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / system-tools-backends-2.0 / scripts / Init / ServicesList.pm < prev   
Encoding:
Perl POD Document  |  2009-04-09  |  8.6 KB  |  341 lines

  1. #-*- Mode: perl; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
  2.  
  3. # Copyright (C) 2005 Carlos Garnacho
  4. #
  5. # Authors: Carlos Garnacho Parro  <carlosg@gnome.org>
  6. #
  7. # This program is free software; you can redistribute it and/or modify
  8. # it under the terms of the GNU Library General Public License as published
  9. # by the Free Software Foundation; either version 2 of the License, or
  10. # (at your option) any later version.
  11. #
  12. # This program is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. # GNU Library General Public License for more details.
  16. #
  17. # You should have received a copy of the GNU Library General Public License
  18. # along with this program; if not, write to the Free Software
  19. # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
  20.  
  21. package Init::ServicesList;
  22.  
  23.  
  24. # This function determines if a service is "forbidden" or not (if runlevel-admin must show it or not)
  25. sub is_forbidden
  26. {
  27.   my ($service) = @_;
  28.   my ($ret);
  29.  
  30.   my ($service_forbidden_list) =
  31.     [
  32.      # These are the forbidden services I found in Red Hat
  33.      "halt",
  34.      "functions",
  35.      "killall",
  36.      # These are the forbidden services I found in Debian Woody    
  37.      "single",
  38.      "sendsigs",
  39.      "reboot",
  40.      "rcS",
  41.      "modutils",
  42.      "hostname\.sh",
  43.      "devpts\.sh",
  44.      "console-screen\.sh",
  45.      "checkroot\.sh",
  46.      "checkfs\.sh",
  47.      "bootmisc\.sh",
  48.      "bootclean\.sh",
  49.      "checkfs\.sh",
  50.      "keymap\.sh",
  51.      "hwclockfirst\.sh",
  52.      "etc-setserial",
  53.      "procps\.sh",
  54.      "mountall\.sh",
  55.      "dns-clean",
  56.      "ifupdown",
  57.      "networking",
  58.      "mountnfs\.sh",
  59.      "mountkernfs",
  60.      "mountvirtfs",
  61.      "setserial",
  62.      "hwclock\.sh",
  63.      "urandom",
  64.      "nviboot",
  65.      "pppd-dns",
  66.      "skeleton",
  67.      "xfree86-common",
  68.      "rc",
  69.      ".*\.dpkg-old",
  70.      ".*~",
  71.      # this shouldn't be shown in slackware
  72.      "inet2",
  73.      # those were found in gentoo
  74.      "bootmisc",
  75.      "checkfs",
  76.      "checkroot",
  77.      "clock",
  78.      "consolefont",
  79.      "crypto-loop",
  80.      "domainname",
  81.      "hostname",
  82.      "keymaps",
  83.      "localmount",
  84.      "net\..*",
  85.      "numlock",
  86.      "depscan\.sh",
  87.      "functions\.sh",
  88.      "halt\.sh",
  89.      "reboot\.sh",
  90.      "rmnologin",
  91.      "runscript\.sh",
  92.      "serial",
  93.      "shutdown\.sh",
  94.      "switch",
  95.      # those were found in FreeBSD
  96.      "DAEMON",
  97.      "LOGIN",
  98.      "NETWORKING",
  99.      "SERVERS",
  100.      "addswap",
  101.      "adjkerntz",
  102.      "archdep",
  103.      "atm2\.sh",
  104.      "atm3\.sh",
  105.      "ccd",
  106.      "cleanvar",
  107.      "cleartmp",
  108.      "devdb",
  109.      "devfs",
  110.      "dhclient",
  111.      "diskless",
  112.      "dumpon",
  113.      "fsck",
  114.      "hostname",
  115.      "initdiskless",
  116.      "initrandom",
  117.      "ldconfig",
  118.      "local",
  119.      "localdaemons",
  120.      "mountcritlocal",
  121.      "mountcritremote",
  122.      "msgs",
  123.      "netif",
  124.      "network1",
  125.      "network2",
  126.      "network3",
  127.      "nisdomain",
  128.      "othermta",
  129.      "pccard",
  130.      "pcvt",
  131.      "pwcheck",
  132.      "random",
  133.      "rcconf\.sh",
  134.      "root",
  135.      "savecore",
  136.      "securelevel",
  137.      "serial",
  138.      "sppp",
  139.      "swap1",
  140.      "syscons",
  141.      "sysctl",
  142.      "tmp",
  143.      "ttys",
  144.      "var",
  145.      "virecover",
  146.      # These are the services found in SuSE
  147.      "rc[sS0-9]\.d",
  148.      "boot",
  149.      "boot\..*",
  150.     ];
  151.  
  152.   foreach $i (@$service_forbidden_list)
  153.   {
  154.     return 1 if ($service =~ "^$i\$");
  155.   }
  156.  
  157.   return 0;
  158. }
  159.  
  160.  
  161. # Ok, maybe we should define this roles stuff a bit:
  162. #
  163. # SYSTEM: all system related services that only powerusers care of
  164. # SOUND:  any service related to sound
  165. # WEB_SERVER: any web server
  166. # COMMAND_SCHEDULER: any service which runs scheduled commands
  167. # NETWORK: network related services that only powerusers care of
  168. # PRINTER_SERVICE: printing daemons in general
  169. # DYNAMIC_DNS: Dinamic DNS services
  170. # DICT:
  171. # MTA: Mail transport agents
  172. # MAIL_FETCHER: services that fetch the mail from other accounts
  173. # DISPLAY_MANAGER: Display managers
  174. # SYSTEM_LOGGER: system log services
  175. # DATABASE_SERVER: database servers
  176. # FILE_SERVER: file servers
  177. # NTP_SERVER: Network time protocol servers
  178. # SECURE_SHELL_SERVER: Secure shell servers
  179. # AUTOMOUNTER: automounter daemons and so
  180. # ANTIVIRUS:
  181. # FILE_SHARING: for emule-like services
  182. # FTP_SERVER:
  183. #
  184. #
  185. # If you feel that there are more important/necessary roles,
  186. # mail me at carlosg@gnome.org
  187.  
  188. sub get_role
  189. {
  190.   my ($script) = @_;
  191.  
  192.   my %service_roles = (
  193.     "acpid" => "SYSTEM",
  194.     "alsa" => "SOUND",
  195.     "am-utils" => "AUTOMOUNTER",
  196.     "amavis" => "ANTIVIRUS",
  197.     "amavis-ng" => "ANTIVIRUS",
  198.     "apache" => "WEB_SERVER",
  199.     "apache-perl" => "WEB_SERVER",
  200.     "apache-ssl" => "WEB_SERVER",
  201.     "apache2" => "WEB_SERVER",
  202.     "anacron" => "COMMAND_SCHEDULER",
  203.     "apmd" => "SYSTEM",
  204.     "atd" => "COMMAND_SCHEDULER", #FIXME
  205.     "atftpd" => "FTP_SERVER",
  206.     "aumix" => "SOUND",
  207.     "autofs" => "AUTOMOUNTER",
  208.     "bind" => "NETWORK",
  209.     "binfmt-support" => "SYSTEM",
  210.     "bootlogd" => "SYSTEM",
  211.     "chargen" => "NETWORK",
  212.     "chargen-udp" => "NETWORK",
  213.     "cherokee" => "WEB_SERVER",
  214.     "clamav-daemon" => "ANTIVIRUS",
  215.     "courier" => "MTA",
  216.     "courier-mta" => "MTA",
  217.     "cpufreqd" => "SYSTEM",
  218.     "cron" => "COMMAND_SCHEDULER",
  219.     "crond" => "COMMAND_SCHEDULER",
  220.     "cupsd" => "PRINTER_SERVICE",
  221.     "cupsys" => "PRINTER_SERVICE",
  222.     "daytime" => "NETWORK",
  223.     "daytime-udp" => "NETWORK",
  224.     "dbus-1" => "SYSTEM",
  225.     "ddclient" => "DYNAMIC_DNS",
  226.     "dhis-client" => "DYNAMIC_DNS",
  227.     "dictd" => "DICT",
  228.     "echo" => "NETWORK",
  229.     "echo-udp" => "NETWORK",
  230.     "esound" => "SOUND",
  231.     "exim" => "MTA",
  232.     "fam" => "SYSTEM",
  233.     "fcron" => "COMMAND_SCHEDULER",
  234.     "firstboot" => "SYSTEM",
  235.     "festival" => "SOUND",     #FIXME
  236.     "fetchmail" => "MAIL_FETCHER",
  237.     "freenet6" => "NETWORK",
  238.     "ftpd" => "FTP_SERVER",
  239.     "gdm" => "DISPLAY_MANAGER",
  240.     "gpm" => "SYSTEM",            #FIXME
  241.     "hdparm" => "SYSTEM",
  242.     "hotplug" => "SYSTEM",
  243.     "httpd"    => "WEB_SERVER",
  244.     "inetd" => "NETWORK",
  245.     "iptables" => "NETWORK",
  246.     "irda" => "SYSTEM",
  247.     "isakmpd" => "NETWORK",
  248.     "isdn" => "NETWORK",
  249.     "joystick" => "SYSTEM",
  250.     "kdm"    => "DISPLAY_MANAGER",
  251.     "keytable" => "SYSTEM",
  252.     "klogd"    => "SYSTEM_LOGGER",
  253.     "kudzu"    => "SYSTEM",
  254.     "lircd"    => "SYSTEM",
  255.     "lircmd" => "SYSTEM",
  256.     "local" => "SYSTEM",
  257.     "lpd" => "PRINTER_SERVICE",
  258.     "lpdng" => "PRINTER_SERVICE",
  259.     "mailscanner" => "ANTIVIRUS",
  260.     "makedev" => "SYSTEM",
  261.     "metalog" => "SYSTEM_LOGGER",
  262.     "mldonkey-server" => "FILE_SHARING",
  263.     "modules" => "SYSTEM",
  264.     "module-init-tools" => "SYSTEM",
  265.     "mysql" => "DATABASE_SERVER",
  266.     "muddleftpd" => "FTP_SERVER",
  267.     "named" => "NETWORK",
  268.     "netfs" => "SYSTEM",
  269.     "network" => "SYSTEM",
  270.     "nfs"    => "FILE_SERVER_NFS",
  271.     "nfs-user-server"    => "FILE_SERVER_NFS",
  272.     "nfs-kernel-server"    => "FILE_SERVER_NFS",
  273.     "nfslock" => "SYSTEM",
  274.     "nscd" => "NETWORK",
  275.     "ntpd" => "NTP_SERVER",
  276.     "ntpdate" => "NTP_SERVER",
  277.     "ntp-client" => "NTP_CLIENT",
  278.     "ntp-server" => "NTP_SERVER",
  279.     "ntp-simple" => "NTP_SERVER",
  280.     "oftpd" => "FTP_SERVER",
  281.     "oops" => "NETWORK",
  282.     "pcmcia" => "SYSTEM",
  283.     "pdnsd" => "NETWORK",
  284.     "pipsecd" => "NETWORK",
  285.     "portmap" => "NETWORK",
  286.     "postfix" => "MTA",
  287.     "postgresql" => "DATABASE_SERVER",
  288.     "postgresql-7.4" => "DATABASE_SERVER",
  289.     "postgresql-8.0" => "DATABASE_SERVER",
  290.     "postgresql-8.1" => "DATABASE_SERVER",
  291.     "ppp"    => "NETWORK",
  292.     "proftpd" => "FTP_SERVER",
  293.     "privoxy" => "NETWORK",
  294.     "pure-ftpd" => "FTP_SERVER",
  295.     "qmail" => "MTA",
  296.     "random" => "SYSTEM",
  297.     "rawdevices" => "SYSTEM",
  298.     "rhnsd" => "SYSTEM",
  299.     "rsync" => "NETWORK",
  300.     "rsyncd" => "NETWORK",
  301.     "samba" => "FILE_SERVER_SMB",
  302.     "saslauthd" => "SYSTEM",     # FIXME: maybe a SECURITY role makes sense?
  303.     "sendmail" => "MTA",
  304.     "servers" => "NETWORK",
  305.     "services" => "NETWORK",
  306.     "setserial" => "SYSTEM",
  307.     "sgi_fam" => "SYSTEM",
  308.     "smartmontools" => "SYSTEM",
  309.     "spamassassin" => "SYSTEM",
  310.     "snmpd"    => "NETWORK",
  311.     "ssh"    => "SECURE_SHELL_SERVER",
  312.     "sshd" => "SECURE_SHELL_SERVER",
  313.     "sysklogd" => "SYSTEM_LOGGER",
  314.     "syslog" => "SYSTEM_LOGGER",
  315.     "tftpd-hpa" => "FTP_SERVER",
  316.     "time" => "NETWORK",
  317.     "time-udp" => "NETWORK",
  318.     "urandom" => "SYSTEM",
  319.     "vcron" => "COMMAND_SCHEDULER",
  320.     "vmware" => "SYSTEM",     # FIXME
  321.     "vsftpd" => "FTP_SERVER",
  322.     "wdm"    => "DISPLAY_MANAGER",
  323.     "webmin" => "SYSTEM",     # FIXME as well
  324.     "winbind" => "NETWORK",
  325.     "wine" => "SYSTEM",     # FIXME like vmware
  326.     "wu-ftpd" => "FTP_SERVER",
  327.     "wzdftpd" => "FTP_SERVER",
  328.     "xdm" => "DISPLAY_MANAGER",
  329.     "xfs" => "SYSTEM",
  330.     "xinetd" => "NETWORK",
  331.     "zmailer" => "MTA",
  332.   );
  333.  
  334.   my ($role) = $service_roles{$script};
  335.  
  336.   return $role if ($role);
  337.   return "UNKNOWN";
  338. }
  339.  
  340. 1;
  341.